/*
 *The abstract class for SearchEngine
 */

#ifndef _SEARCHENGINE_H
#define _SEARCHENGINE_H

#include "AKCommon.h"
#include "CDSQBaseInfo.h"

class CDSQBoard;

class CAlgSearchEngine
{
protected:
	CAlgSearchEngine(){};
	virtual ~CAlgSearchEngine(){};

public:
	virtual void backToInitialState();
	void SetSearchDepth(Level depth);
	Level GetSearchDepth(){ return m_depth; }
	AKMove SearchAGoodMove(CDSQBoard* pBoard, AKSideIndex side);
	
protected:
	virtual void RunSearchEngine(CDSQBoard* pBoard, AKSideIndex side) = 0;

protected:
	Level m_depth;
	AKMove m_BestMove;
};
#endif //_SEARCHENGINE_H